package iterable_0929;

import java.util.ArrayList;
import java.util.List;

/**
 * 线性表：
 * 元素和元素之间出现线性的结构，每一个元素都有一个独一无二的位置与之关联。合法的位置下标取值范围[0,size)
 * 出了头尾元素，其余元素都有逻辑上的前一个元素——前驱元素(previous),后一个元素——后继元素(next)
 * 排序能力、下标概念是线性结构独有的
 * List:
 * add() boolean 添加元素到集合的尾部
 * addAll(int,Collection) 给定一个下标放入其他集合
 * sort(Comparator) void 排序
 * get(int index) E 获取元素下标（元素仍在集合中）
 * set(int index,e) E 设置一个元素
 * add(int index,e) void 指定下标添加一个元素
 * remove(int index ,e) E 删除指定位置元素
 * indexOf(e) int 返回元素在线性表中的位置,从前往后找
 * indexLastOF(e) int 返回元素在线性表中的位置,从后往前找
 * subList(int int) List 给定起始位置和结束位置，取出元素（左闭右开）
 */
public class MyList {
    public static void main(String[] args) {
        List list= new ArrayList();
        list.add(100);
        list.add(200);
        list.add(300);
        System.out.println(list);//[100,200,300]
        System.out.println(list.get(0));//100
        System.out.println(list.size()-1);//2
        list.add(0,1000);
        System.out.println(list);//[1000,100,200,300]
        list.add(3,100);
        System.out.println(list);//[1000,100,200,100,300]
        list.add(5,2000);
        System.out.println(list.indexOf(100));//1
        System.out.println(list.lastIndexOf(100));//3
        list.remove(3);
        System.out.println(list);//[1000,100,200,300,2000]
        System.out.println(list.subList(2,4));//[200,300]!!!左开右闭
    }
}
